const sessionCache = {
	set (key, value) {
		if (!sessionStorage) {
			return
		}
		if (key !== null && value !== null) {
			sessionStorage.setItem(key, value)
		}
	},
	get (key) {
		if (!sessionStorage) {
			return null
		}
		if (key === null) {
			return null
		}
		return sessionStorage.getItem(key)
	},
	setJSON (key, jsonValue) {
		if (jsonValue !== null) {
			this.set(key, JSON.stringify(jsonValue))
		}
	},
	getJSON (key) {
		const value = this.get(key)
		if (value !== null) {
			return JSON.parse(value)
		}
	},
	remove (key) {
		sessionStorage.removeItem(key)
	}
}
const localCache = {
	set (key, value) {
		if (!localStorage) {
			return
		}
		if (key !== null && value !== null) {
			localStorage.setItem(key, value)
		}
	},
	get (key) {
		if (!localStorage) {
			return null
		}
		if (key === null) {
			return null
		}
		return localStorage.getItem(key)
	},
	setJSON (key, jsonValue) {
		if (jsonValue !== null) {
			this.set(key, JSON.stringify(jsonValue))
		}
	},
	getJSON (key) {
		const value = this.get(key)
		if (value !== null) {
			return JSON.parse(value)
		}
	},
	remove (key) {
		localStorage.removeItem(key)
	}
}

export default {
	/**
   * 会话级缓存
   */
	session: sessionCache,
	/**
   * 本地缓存
   */
	local: localCache
}
